Model-driven engineering and related concepts relate, for example, to the use of formalized models to design, manage, implement, and modify software applications and other processes. Such models provide a formalized abstraction of desired properties and behaviors (e.g., of software components), and this abstraction provides, among other benefits, an ability of a designer or other user to understand, explain, create, or implement the software application(s) in a manner that is consistent, logical, and efficient. Further, the use of such models allows for later modifications of the resulting software application(s), in a straight-forward manner that minimizes undesired or unexpected consequences of the modifications.
Models at a given layer of abstraction may be extended in order to provide a desired feature or functionality for an associated software application, such as when an otherwise generic model/application is to be implemented in a more specific context or domain. Such extensions may themselves be formalized, so that designers or other users may add desired features or functionalities to models in a straight-forward, consistent manner. For example, models expressed in the Unified Modeling Language (UML) may be associated with a number of profiles, e.g., a metamodel providing extensions to the language it effectively extends (e.g., UML). The extensions can provide domain specific information. For example, a UML model may include an element that is associated with a particular software component (e.g., a software component associated with processing a credit card transaction). Then, for example, a designer may wish to associate a security profile to the element, in order to provide a desired level of security for the credit card transaction. Since the security profile itself may be pre-defined and substantially uniform, the designer or other user may also apply the same security profile to other elements of the example UML model, or to (elements of) other UML models entirely.
In practice, however, it may occur that one or more software applications may each be associated with a large number of models, and/or each model may include a large number of elements. Consequently, in these and other examples, it may be difficult or impractical to provide a specified profile for desired models/elements of a software application.